package com.icangya.service;


import com.icangya.domain.GoodsConvert;
import com.icangya.domain.GoodsConvertDetails;
import com.icangya.domain.RwGoodOrder;

import java.util.List;

public interface IGoodsService {

    /**
     * 获取每个用户的当日成交量
     * @param uid
     * @return
     */
    Long getUserOrderCountByNow(long uid);

    /**
     * 添加兑换商品信息
     * @param goodsConvert
     * @return
     */
    GoodsConvert saveGoodsConvert(GoodsConvert goodsConvert);

    //根据状态查询上架或下架的商品
    List getGoodsConvertByStatus(long status);

    /**
     * 根据商品id 查询兑换商品的详情
     * @param id
     * @return
     */
    GoodsConvert getGoodsConvertById(long id);

    /**
     * 修改兑换商品信息
     * @param goodsConvert
     * @return
     */
    Boolean updateGoodsConvert(GoodsConvert goodsConvert);

    /**
     * 根据商品id,删除该兑换商品
     * @param goodsConvert
     */
    void removeGoodsConvertById(GoodsConvert goodsConvert);

    /**
     * 添加兑换商品的详情图片
     * @param goodsConvertDetails
     * @return
     */
    GoodsConvertDetails saveGoodsConvertDetails(GoodsConvertDetails goodsConvertDetails);

    /**
     * 根据商品id 查询商品对应的详情图
     * @param gid
     * @return
     */
    List getGoodsConvertDetailsByGid(long gid);

    /**
     * 添加兑换专区商品订单信息
     * @param rwGoodOrder
     * @return
     */
    RwGoodOrder saveRwGoodOrder(RwGoodOrder rwGoodOrder);

    /**
     * 查询代付款的订单信息
     * @param startPage  页码   分页查询
     * @return
     */
    List getGoodOrderByPayStatus(int startPage);

    /**
     * 根据发货状态查询订单信息
     * @param startPage   页码
     * @param sendStatus  发货状态
     * @return
     */
    List getGoodsOrderSendStatus(int sendStatus,int startPage);

    /**
     * 根据条件查询代付款的订单信息
     * @param orderId   订单号
     * @param startTime  开始时间
     * @param endTime  结束时间
     * @param nameOrPhone  收货人姓名或手机号
     * @param address   地址
     * @param goodName  商品名称
     * @param nickName  昵称
     * @param startPage  页码
     * @return
     */
    List getGoodsOrderPayStatusByCondition(String orderId,String startTime,String endTime,String nameOrPhone,String address,String goodName,
                                           String nickName,int startPage);


    /**
     * 根据条件查询是否收货的订单信息
     * @param orderId   订单号
     * @param startTime  开始时间
     * @param endTime  结束时间
     * @param nameOrPhone  收货人姓名或手机号
     * @param address   地址
     * @param goodName  商品名称
     * @param nickName  昵称
     * @param startPage  页码
     *@param sendStatus  收货状态
     * @return
     */
     List getGoodsOrderSendStatusByCondition(String orderId,String startTime,String endTime,String nameOrPhone,String address,String goodName,
                                                         String nickName,int startPage,int sendStatus);

}
